home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
THINKC
/
TCL1
/
GRAPH_FO
/
(GRAPH
/
GRAPH_HE
/
GRAPH.H
next >
Wrap
Text File
|
1991-04-03
|
2KB
|
85 lines
/******************************************************************************
Graph.h
Graph methods in Object C.
SUPERCLASS = CObject
Copyright ⌐ 1991 Maarten Meijer. All rights reserved.
CIS 100016,1764; FidoNet 2:512/114
*******************************************************************************/
#define _H_Graph
/* includes */
#include <CObject.h>
#include <CPanorama.h>
#include "GrList.h"
#include "GrVertex.h"
#include "GrEdge.h"
/* class definition */
struct Graph : CObject {
CPanorama *itsPane; /* the enclosing panorama */
GrList *vertexList;
GrList *edgeList;
short _flags; /* not used at the moment */
/* can be used analogous to ListManager */
Point _grid;
void IGraph(CPanorama *thePane, int flags, Point grid);
/* Freeing methods */
void Dispose(void); /* OVERRIDE */
/* Drawing methods */
Point Align(Point pt); /* align point to grid */
void Draw(Rect *area);
/* selection routines */
void Deselect(void);
/* Manipulation routines */
GrVertex * FindVertex(Point where);
GrEdge * FindEdge(Point where);
/* Creation routines for edges and vertices */
GrVertex * NewVertex(void);
GrEdge * NewEdge(void);
GrVertex * AddVertex(Point center, Boolean redraw);
GrEdge * AddEdge(GrVertex *from, GrVertex *to, Boolean redraw);
void RemoveVertex(GrVertex *whichVertex, Boolean redraw);
void RemoveEdge(GrEdge *whichEdge, Boolean redraw);
/* Macintosh support routines */
void SetVertexCenter(GrVertex *which, Point where, Boolean redraw);
void GetGrid(Point *grid);
/* Query methods */
Boolean AdjacentTo(GrVertex *v1, GrVertex *v2);
Boolean AdjacentFrom(GrVertex *v1, GrVertex *v2);
Boolean Adjacent(GrVertex *v1, GrVertex *v2);
/* Setting options */
void SetOptions(void);
};
/* externs */
extern void Graph_CompileRgn(GrVertex *this, RgnHandle rgn);
/* defines */
#define grHAlign 0x0001 /* auto align */
#define grVAlign 0x0002 /* auto align */
#define grDirected 0x0004 /* directed graph */
#define grMulti 0x0008 /* multiple edges between vertices */
#define grSelfRef 0x0010 /* allow edges to self vertex */
#define grDebug 0x0020 /* show rectangles */
#define grErrID 131
#define grUnimplErr 1
#define grDigraphErr 2
#define grMultiErr 3
#define grNoSelfErr 4